/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Ventanas;

import Offline.Deshacer;
import Online.EnviarMail;
import Online.Mensajes;
import Online.Tareas;
import java.awt.Color;
import java.awt.Container;
import java.awt.Cursor;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.*;

/**
 *
 * @author Victor
 */
public class VentanaMensaje extends JFrameConFondo implements ActionListener{
    
    	private String id;
        private JButton botonAceptar;
        private JButton botonRechazar;
        private Ventana ventana;
        private VentanaMapa ventanam;
        private VentanaMensajes anterior;
        private Mensajes mensaje;
        private String [] fila;
        private ArrayList<Deshacer> deshacer = new ArrayList<Deshacer>();
        
        public VentanaMensaje(String id, Ventana ventana,VentanaMensajes anterior, ArrayList deshacer
                                , VentanaMapa ventanam){
                //constructor JFrame
		super("Mensaje");
                
                JLabel Remitente;
                JLabel Nombre;
                JLabel Tareas;
                
                this.id = id;
                this.ventana = ventana;
                this.ventanam = ventanam;
                this.anterior = anterior;
                this.deshacer = deshacer;
            
                //Opciones de ventana
		this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
                //se añade la opción de preguntar antes de salir
                addWindowListener(new java.awt.event.WindowAdapter() {
                    public void windowClosing(java.awt.event.WindowEvent evt) {
                        setVisible(false);
                        setDefaultCloseOperation(DISPOSE_ON_CLOSE); 
                    }
                });
                
		setLayout(null);
		setSize(370,320);
                setLocationRelativeTo(null);
		Container contenidoPanel = getContentPane();
		contenidoPanel.setBackground(Color.gray);
                setImagen("objetos/fondo.jpg");
                setIconImage(new ImageIcon(getClass().getResource("objetos/icono.png")).getImage()); 
                
                mensaje = new Mensajes();
                //Se piden los datos de la tarea
                fila = mensaje.getMensaje(id);
                
                //Cuadrante de introducción de nombre
		Remitente = new JLabel("Enviada por: "+fila[1]);
                Remitente.setBounds(10,10,300,40);
                Remitente.setForeground(Color.white);
                add(Remitente);
                Remitente.setFont(new java.awt.Font("Tahoma", 0, 20)); 
                
		Nombre = new JLabel("Tareas:");
                Nombre.setBounds(10,80,300,20);
                Nombre.setForeground(Color.white);
                add(Nombre);
                Nombre.setFont(new java.awt.Font("Tahoma", 0, 18)); 
                
                String [] tareas = mensaje.gettareas(id);
                String tarea = "      ";
                int tam = 0;
                for(int i=0;i<tareas.length && tareas[i]!=null;i++){
                    if (tareas[i+1]==null)
                        tarea = tarea+tareas[i]+".";
                    else
                        tarea = tarea+tareas[i]+", ";
                    tam = i+1;
                }
                
		Tareas = new JLabel(tarea);
                Tareas.setBounds(10,100,300,tam*20);
                Tareas.setForeground(Color.white);
                add(Tareas);
                Tareas.setFont(new java.awt.Font("Tahoma", 0, 15)); 
                
                
                
                //Constucción del boton Aceptar
		botonAceptar = new JButton("Aceptar"); 
		add(botonAceptar);
		botonAceptar.setBounds(245,250,100,30);
                botonAceptar.setFont(new java.awt.Font("Arial", 1, 16)); 
                botonAceptar.setActionCommand("Aceptar");
		botonAceptar.addActionListener(this);
                botonAceptar.setIcon(new ImageIcon(getClass().getResource("objetos/Aceptar Inicio.jpg")));
                                
                //Constucción del boton Aceptar
		botonRechazar = new JButton("Rechazar"); 
		add(botonRechazar);
		botonRechazar.setBounds(10,250,100,30);
                botonRechazar.setFont(new java.awt.Font("Arial", 1, 16)); 
                botonRechazar.setActionCommand("Rechazar");
		botonRechazar.addActionListener(this);
                botonRechazar.setIcon(new ImageIcon(getClass().getResource("objetos/Rechazar.jpg")));
                
                setVisible(true);
                
        }

    @Override
    public void actionPerformed(ActionEvent e) {
        
        //Variable que contiene el boton pulsado
         String comando = e.getActionCommand();
         
         if(comando.equals("Aceptar")){
             //Se crea el objeto que se conectara a la bbdd para tareas
             Tareas tarea = new Tareas();
             boolean salir = false;
             //Si no se ha conectado
             while (!tarea.estado() && !salir){
                this.setCursor(Cursor.WAIT_CURSOR);
                String message = "Fallo al conectar con el servidor.\n¿Desea volver a intentar conectar?";
                String title = "Error de conexión";
                //Se ofrece la opcion de reconectar
                int reply = JOptionPane.showConfirmDialog(null, message, title, JOptionPane.YES_NO_OPTION);
                this.setCursor(Cursor.DEFAULT_CURSOR);
                //Si rechazo reconectar
                if (reply == JOptionPane.NO_OPTION){     
                    this.setCursor(Cursor.WAIT_CURSOR);
                    salir=true;
                    new VentanaInicio();
                    if (ventana!= null){
                        this.ventana.setVisible(false);
                        this.ventana.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
                    }
                    else{
                        this.ventanam.setVisible(false);
                        this.ventanam.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
                    }
                    setVisible(false);
                    setDefaultCloseOperation(DISPOSE_ON_CLOSE);
                    this.setCursor(Cursor.DEFAULT_CURSOR);
                }
                //Si se acepto reconectar
                else{
                    this.setCursor(Cursor.WAIT_CURSOR);
                    //Se reconecta
                    tarea = new Tareas();
                    this.setCursor(Cursor.DEFAULT_CURSOR);
                }    
            }
             String [] tareas = mensaje.gettareas(id);
                    this.setCursor(Cursor.WAIT_CURSOR);
            for(int i = 0;i<tareas.length && tareas[i]!=null;i++){
                String [] tar = mensaje.getTarea(id, tareas[i]);
                //Se comprueba que el nombre de la tarea este libre
                if (tarea.gettarea(fila[0], "Lista Principal", tareas[i])!=null)
                    JOptionPane.showMessageDialog (null,"El nombre de la tarea ya está en uso y no se añadirá.",
                                    "Atención", JOptionPane.INFORMATION_MESSAGE);
                else{
                    //Se añade la tarea nueva
                    String dia = tar[1].substring(8,10);
                    String mes = tar[1].substring(5,7);
                    String año = tar[1].substring(0,4);
                    if (!tarea.addtarea(fila[0]+"Lista Principal", tareas[i], dia, mes, año, tar[2]))
                        JOptionPane.showMessageDialog (null,"No se ha podido agregar la tarea.",
                                    "Atención", JOptionPane.ERROR_MESSAGE); 
                    else{
                        if(deshacer !=null)
                            deshacer.add(new Deshacer("Añadir",fila[0],"Lista Principal",tareas[i],
                                               0,"","",""));
                        else{
                            deshacer = new ArrayList<Deshacer>();
                            deshacer.add(new Deshacer("Añadir",fila[0],"Lista Principal",tareas[i],
                                               0,"","",""));}
                    }
                }
            }
            setVisible(false);
            anterior.Actualizar(deshacer);
            String [] datosM = mensaje.getMensaje(id);
            EnviarMail email = new EnviarMail(datosM[1], datosM[3], datosM[0], "aceptado",true);
            mensaje.eliminar(id);
            this.setCursor(Cursor.DEFAULT_CURSOR);
            //Se cierra la ventana
            setDefaultCloseOperation(DISPOSE_ON_CLOSE);
         }
         else if (comando.equals("Rechazar")){
             String message = "¿Está seguro de que quiere Eliminar la tarea?";
             String title = "Eliminar";
             //Se pide confirmacion para eliminar la tarea
             int reply = JOptionPane.showConfirmDialog(null, message, title, JOptionPane.YES_NO_OPTION);
             this.setCursor(Cursor.DEFAULT_CURSOR);
             //Si se confirma
             if (reply == JOptionPane.YES_OPTION){
                 mensaje = new Mensajes();
                    String [] datosM = mensaje.getMensaje(id);
                    EnviarMail email = new EnviarMail(datosM[1], datosM[3], datosM[0], "rechazado",true);
                mensaje.eliminar(id);
                anterior.Actualizar(null);                 
                //Se cierra la ventana
                setVisible(false);
                setDefaultCloseOperation(DISPOSE_ON_CLOSE); 
             }
         }
    }
    
}

